<?php

namespace JLPay\Models\Ledger\Merchconf;

use JLPay\Models\BaseRequest;

/**
 * 商户分账开通请求
 */
class MerchRevOpenRequest extends BaseRequest
{
    /**
     * API URL
     */
    public const API_URL = '/open/ledger/merch/rev/open';

    protected ?string $orgCode = null;
    protected ?string $merchType = null;
    protected ?string $mchId = null;
    protected ?string $licenseNumber = null;
    protected ?string $licenseName = null;
    protected ?string $licenseAddress = null;
    protected ?string $licenseBeginDate = null;
    protected ?string $licenseEndDate = null;
    protected ?string $licenseFrontSourceId = null;
    protected ?string $legalName = null;
    protected ?string $legalNumber = null;
    protected ?string $legalBeginDate = null;
    protected ?string $legalEndDate = null;
    protected ?string $legalFrontSourceId = null;
    protected ?string $legalBackSourceId = null;
    protected ?string $mobile = null;
    protected ?string $bankCardNo = null;
    protected ?string $bankCardName = null;
    protected ?string $bankCode = null;
    protected ?string $bankName = null;
    protected ?string $bankBranchCode = null;
    protected ?string $bankBranchName = null;
    protected ?string $bankFrontSourceId = null;

    /**
     * 设置机构代码
     *
     * @param string $orgCode
     * @return self
     */
    public function setOrgCode(string $orgCode): self
    {
        $this->orgCode = $orgCode;
        return $this;
    }

    /**
     * 设置商户类型
     *
     * @param string $merchType
     * @return self
     */
    public function setMerchType(string $merchType): self
    {
        $this->merchType = $merchType;
        return $this;
    }

    /**
     * 设置商户号
     *
     * @param string $mchId
     * @return self
     */
    public function setMchId(string $mchId): self
    {
        $this->mchId = $mchId;
        return $this;
    }

    /**
     * 设置营业执照号
     *
     * @param string $licenseNumber
     * @return self
     */
    public function setLicenseNumber(string $licenseNumber): self
    {
        $this->licenseNumber = $licenseNumber;
        return $this;
    }

    /**
     * 设置营业执照名称
     *
     * @param string $licenseName
     * @return self
     */
    public function setLicenseName(string $licenseName): self
    {
        $this->licenseName = $licenseName;
        return $this;
    }

    /**
     * 设置营业执照地址
     *
     * @param string $licenseAddress
     * @return self
     */
    public function setLicenseAddress(string $licenseAddress): self
    {
        $this->licenseAddress = $licenseAddress;
        return $this;
    }

    /**
     * 设置营业执照开始日期
     *
     * @param string $licenseBeginDate
     * @return self
     */
    public function setLicenseBeginDate(string $licenseBeginDate): self
    {
        $this->licenseBeginDate = $licenseBeginDate;
        return $this;
    }

    /**
     * 设置营业执照结束日期
     *
     * @param string $licenseEndDate
     * @return self
     */
    public function setLicenseEndDate(string $licenseEndDate): self
    {
        $this->licenseEndDate = $licenseEndDate;
        return $this;
    }

    /**
     * 设置营业执照正面文件源ID
     *
     * @param string $licenseFrontSourceId
     * @return self
     */
    public function setLicenseFrontSourceId(string $licenseFrontSourceId): self
    {
        $this->licenseFrontSourceId = $licenseFrontSourceId;
        return $this;
    }

    /**
     * 设置法人姓名
     *
     * @param string $legalName
     * @return self
     */
    public function setLegalName(string $legalName): self
    {
        $this->legalName = $legalName;
        return $this;
    }

    /**
     * 设置法人证件号
     *
     * @param string $legalNumber
     * @return self
     */
    public function setLegalNumber(string $legalNumber): self
    {
        $this->legalNumber = $legalNumber;
        return $this;
    }

    /**
     * 设置法人证件开始日期
     *
     * @param string $legalBeginDate
     * @return self
     */
    public function setLegalBeginDate(string $legalBeginDate): self
    {
        $this->legalBeginDate = $legalBeginDate;
        return $this;
    }

    /**
     * 设置法人证件结束日期
     *
     * @param string $legalEndDate
     * @return self
     */
    public function setLegalEndDate(string $legalEndDate): self
    {
        $this->legalEndDate = $legalEndDate;
        return $this;
    }

    /**
     * 设置法人证件正面文件源ID
     *
     * @param string $legalFrontSourceId
     * @return self
     */
    public function setLegalFrontSourceId(string $legalFrontSourceId): self
    {
        $this->legalFrontSourceId = $legalFrontSourceId;
        return $this;
    }

    /**
     * 设置法人证件背面文件源ID
     *
     * @param string $legalBackSourceId
     * @return self
     */
    public function setLegalBackSourceId(string $legalBackSourceId): self
    {
        $this->legalBackSourceId = $legalBackSourceId;
        return $this;
    }

    /**
     * 设置手机号
     *
     * @param string $mobile
     * @return self
     */
    public function setMobile(string $mobile): self
    {
        $this->mobile = $mobile;
        return $this;
    }

    /**
     * 设置银行卡号
     *
     * @param string $bankCardNo
     * @return self
     */
    public function setBankCardNo(string $bankCardNo): self
    {
        $this->bankCardNo = $bankCardNo;
        return $this;
    }

    /**
     * 设置银行卡姓名
     *
     * @param string $bankCardName
     * @return self
     */
    public function setBankCardName(string $bankCardName): self
    {
        $this->bankCardName = $bankCardName;
        return $this;
    }

    /**
     * 设置银行代码
     *
     * @param string $bankCode
     * @return self
     */
    public function setBankCode(string $bankCode): self
    {
        $this->bankCode = $bankCode;
        return $this;
    }

    /**
     * 设置银行名称
     *
     * @param string $bankName
     * @return self
     */
    public function setBankName(string $bankName): self
    {
        $this->bankName = $bankName;
        return $this;
    }

    /**
     * 设置银行支行代码
     *
     * @param string $bankBranchCode
     * @return self
     */
    public function setBankBranchCode(string $bankBranchCode): self
    {
        $this->bankBranchCode = $bankBranchCode;
        return $this;
    }

    /**
     * 设置银行支行名称
     *
     * @param string $bankBranchName
     * @return self
     */
    public function setBankBranchName(string $bankBranchName): self
    {
        $this->bankBranchName = $bankBranchName;
        return $this;
    }

    /**
     * 设置银行卡正面照片
     * 开户类型为1、2时，必传，银行卡正面照片的sourceId
     *
     * @param string $bankFrontSourceId
     * @return self
     */
    public function setBankFrontSourceId(string $bankFrontSourceId): self
    {
        $this->bankFrontSourceId = $bankFrontSourceId;
        return $this;
    }

    /**
     * 获取机构代码
     *
     * @return string|null
     */
    public function getOrgCode(): ?string
    {
        return $this->orgCode;
    }

    /**
     * 获取商户类型
     *
     * @return string|null
     */
    public function getMerchType(): ?string
    {
        return $this->merchType;
    }

    /**
     * 获取商户号
     *
     * @return string|null
     */
    public function getMchId(): ?string
    {
        return $this->mchId;
    }

    /**
     * 获取营业执照号
     *
     * @return string|null
     */
    public function getLicenseNumber(): ?string
    {
        return $this->licenseNumber;
    }

    /**
     * 获取营业执照名称
     *
     * @return string|null
     */
    public function getLicenseName(): ?string
    {
        return $this->licenseName;
    }

    /**
     * 获取营业执照地址
     *
     * @return string|null
     */
    public function getLicenseAddress(): ?string
    {
        return $this->licenseAddress;
    }

    /**
     * 获取营业执照开始日期
     *
     * @return string|null
     */
    public function getLicenseBeginDate(): ?string
    {
        return $this->licenseBeginDate;
    }

    /**
     * 获取营业执照结束日期
     *
     * @return string|null
     */
    public function getLicenseEndDate(): ?string
    {
        return $this->licenseEndDate;
    }

    /**
     * 获取营业执照正面文件源ID
     *
     * @return string|null
     */
    public function getLicenseFrontSourceId(): ?string
    {
        return $this->licenseFrontSourceId;
    }

    /**
     * 获取法人姓名
     *
     * @return string|null
     */
    public function getLegalName(): ?string
    {
        return $this->legalName;
    }

    /**
     * 获取法人证件号
     *
     * @return string|null
     */
    public function getLegalNumber(): ?string
    {
        return $this->legalNumber;
    }

    /**
     * 获取法人证件开始日期
     *
     * @return string|null
     */
    public function getLegalBeginDate(): ?string
    {
        return $this->legalBeginDate;
    }

    /**
     * 获取法人证件结束日期
     *
     * @return string|null
     */
    public function getLegalEndDate(): ?string
    {
        return $this->legalEndDate;
    }

    /**
     * 获取法人证件正面文件源ID
     *
     * @return string|null
     */
    public function getLegalFrontSourceId(): ?string
    {
        return $this->legalFrontSourceId;
    }

    /**
     * 获取法人证件背面文件源ID
     *
     * @return string|null
     */
    public function getLegalBackSourceId(): ?string
    {
        return $this->legalBackSourceId;
    }

    /**
     * 获取手机号
     *
     * @return string|null
     */
    public function getMobile(): ?string
    {
        return $this->mobile;
    }

    /**
     * 获取银行卡号
     *
     * @return string|null
     */
    public function getBankCardNo(): ?string
    {
        return $this->bankCardNo;
    }

    /**
     * 获取银行卡姓名
     *
     * @return string|null
     */
    public function getBankCardName(): ?string
    {
        return $this->bankCardName;
    }

    /**
     * 获取银行代码
     *
     * @return string|null
     */
    public function getBankCode(): ?string
    {
        return $this->bankCode;
    }

    /**
     * 获取银行名称
     *
     * @return string|null
     */
    public function getBankName(): ?string
    {
        return $this->bankName;
    }

    /**
     * 获取银行支行代码
     *
     * @return string|null
     */
    public function getBankBranchCode(): ?string
    {
        return $this->bankBranchCode;
    }

    /**
     * 获取银行支行名称
     *
     * @return string|null
     */
    public function getBankBranchName(): ?string
    {
        return $this->bankBranchName;
    }

    /**
     * 获取银行卡正面照片
     * 开户类型为1、2时，必传，银行卡正面照片的sourceId
     *
     * @return string|null
     */
    public function getBankFrontSourceId(): ?string
    {
        return $this->bankFrontSourceId;
    }
} 